iT邦幫忙

2024 iThome 鐵人賽

DAY 5
2

https://ithelp.ithome.com.tw/upload/images/20240919/20118848qq8xi0bSJf.png

除了 Linux 作業系統之外,Windows 也是企業應用系統中佔據不少比例的作業系統。不過 Windows 本身不支援 Syslog 或 CEF 格式的記錄傳送方式,該如何處理?

這個問題不大,搭配成熟的開源軟體 NXLog 就能為我們解決這個問題。


Windows 取得 NXLog CE 記錄轉送程式

Windows 內部採用 Eventlog 格式儲存記錄事件,並且提供了事件檢視器協助我們調閱相關記錄。要往外傳送至 Graylog 伺服器時,我們將搭配 NXLog 這套記錄轉送工具,它的功能非常強大,其中一個重要關鍵是可以將 Windows 當中的 Eventlog 轉換為 GELF 格式後傳送至 Graylog 的 GELF 輸入器,正好完美解決問題。

NXLog 提供了企業版 (Enterprise Edition) 與 社群版 (Community Edition),本系列文章將會用 NXLog CE 社群版進行使用。

請連接至 NXLog 官方網站的社群版下載頁。

進入後,請在左方的 Version 版本選擇 NXLog Community Edition (1),在 Platform 平台選擇 Windows 圖示 (2),下方的檔案清單中請勾選 Windows x84-64 (3) 那一筆,如果有多筆請選擇版本最新的即可,最後再按下 Download (4)。

https://ithelp.ithome.com.tw/upload/images/20240919/20118848Eeh1MSV8my.png
選擇 NXLog CE 安裝程式

最後一步,NXLog 網站會詢問是否要註冊一組帳號,以利之後可以收到各種 NXLog 相關最新資訊,若有興趣可以點選 Sign Up 註冊,若只想下載 NXlog CE 安裝程式,請點選最下方的 No thanks, just start my download 即可開始下載。

https://ithelp.ithome.com.tw/upload/images/20240919/201188480SVaI6tpND.png
下載 NXLog CE 安裝程式


Windows 安裝 NXLog CE 記錄轉送程式

點選下載完成的安裝程式執行,就如同一般 Windows 應用程式安裝的方式一下,逐步 NextInstall 直到完成安裝即可。

https://ithelp.ithome.com.tw/upload/images/20240919/201188480D0kepgQBi.png
執行 NXLog CE 安裝程式

當安裝程式執行到最後一步時,出現如下畫面並顯示有 Completed the NXLog-CE Setup Wizard 的字眼,表示安裝順利完成。

https://ithelp.ithome.com.tw/upload/images/20240919/20118848m79UuAnhq3.png
執行 NXLog CE 安裝程式完成


Windows 設定 NXLog CE 記錄轉送程式擷取 Eventlog

安裝完成後先不要啟動 NXLog 服務 (它剛安裝完成也不會立即啟動),需要先調整設定檔案讓 NXLog 正確的取得應有的記錄來源。

請在系統選單中找到 記事本,按下滑鼠右鍵選擇 以系統管理員身分執行

https://ithelp.ithome.com.tw/upload/images/20240919/20118848AR7WEBlndW.png
以管理員身分執行記事本

接著請用記事本的開啟檔案功能,選擇資料夾位置到 C:\Program Files\nxlog\conf 之下,接著將副檔名類型選為 所有檔案 (1),在上方出現一個 nxlog 的 CONF 類型檔案 (2),將它選取後按下開啟。

https://ithelp.ithome.com.tw/upload/images/20240919/20118848siCjUgSHKo.png
開啟 NXLog CE 設定檔

SpoolDir %ROOT%\data 這一行之後的範例設定全部刪除,下圖中紅框是需要保留的部份,稍候下方會使用我所提供的內容進行設定。

https://ithelp.ithome.com.tw/upload/images/20240919/20118848MASNylVRcq.png
調整 NXLog CE 設定檔

接著請在設定檔的後方貼入以下設定:

<Extension _gelf>
    Module xm_gelf
</Extension>

<Input in>
    # 2003 (含)以前用 im_mseventlog
    # Module im_mseventlog

    # Vista (含)以後用 im_msvistalog
    Module im_msvistalog
</Input>

<Output out>
    Module om_udp
    Host 192.168.1.51
    Port 32201
    OutputType GELF
</Output>

<Route 1>
    Path in => out
</Route>

這是一個相當標準的 NXLog 設定檔,NXLog 跟 Graylog 一樣有輸入 (Input) 與輸出 (Output) 的設計,各個區塊說明如下:

  • <Extension _gelf>
    宣告要使用的模組並取名為 _gelf,本設定檔宣告 xm_gelf,表示稍候會用來處理 GELF 格式的記錄。

  • <Input in>
    宣告一個輸入器並取名為 in,裡面啟用 im_msvistalog 模組,表示要讀取 Eventlog 的記錄資料做為輸入來源,會自動監視新記錄的加入並處理。若安裝的作業系統是 Vista 及其以後的作業系統請採用 im_msvistalog,若是較舊的作業系統則採用 im_mseventlog

  • <Output out>
    宣告一個輸入器並取名為 out,裡面啟用 om_udp 表示使用 UDP 傳輸協定,HostPort 指向 Graylog 伺服器的 IP 及 Graylog GELF 輸入器的連接埠號,OutputType 表示使用 GELF 格式傳送過去。

  • <Route 1>
    宣告一條路由並取名為 1,表示要將 in 這個輸入器進來的資料傳送至 out 這個輸出器指向的 Log 伺服器,建立一條完整的路線。

https://ithelp.ithome.com.tw/upload/images/20240919/201188487U5p1Odb9A.png
完成 NXLog CE 設定檔

將設定檔儲存後,請進入 Windows 的 服務 管理程式,找到 NXLog 服務並將它重新啟動,即可讓 NXLog CE 開始傳送後面的新記錄至 Graylog。

https://ithelp.ithome.com.tw/upload/images/20240919/20118848SLqKrP0vIt.png
重新啟動 NXLog 服務

補充:

選擇用 GELF 格式的好處,就是它可以將 Eventlog 原本的各種欄位完整的傳送至 Graylog 存放為同樣的欄位結構,省去拆解欄位的工作。


Windows 確認記錄傳送

進入 Graylog 伺服器的輸入器頁面,找到 GELF UDP 區塊,右方的 Network IO 如有數字變化,表示已經有資料進入。

右方的 Show received messages 按鈕,按下後即可撿視相關記錄。

https://ithelp.ithome.com.tw/upload/images/20240919/20118848J4D9JUtqgj.png
準備檢視 GELF 輸入器的記錄

進入詳細記錄畫面後,可以看到許多來自 Windows 作業系統以 NXLog 傳送進來的記錄。

https://ithelp.ithome.com.tw/upload/images/20240919/20118848MRzNu0jKkc.png
檢視 GELF 輸入器收到的記錄


Windows 產生測試記錄

若有某些情況下 Eventlog 沒有自動產生記錄時,也可以手動產生一筆記錄以進行測試。

在 Windows 作業系統中可以利用命令列指令產生一筆測試記錄以協助測試,請先用系統管理員身份進入命令列,接著用法如下:

eventcreate /T WARNING /ID 100 /L APPLICATION /SO mytest /D "This is a test message"

執行完成後,先確認本機的事件檢視器是否有出現:

https://ithelp.ithome.com.tw/upload/images/20240919/20118848KG9NdSoMqG.png
檢視測試記錄

接著到 Graylog 上搜尋,如果在 Graylog 中有出現,表示事件檢視器有正確收到,且 NXLog CE 正常收到記錄也成功傳送至 Graylog 存放。

https://ithelp.ithome.com.tw/upload/images/20240919/20118848FftQgqm8Y8.png
搜尋測試記錄


Windows 直接傳送測試

如果要排除 Eventlog 以及 NXLog 套件直接對 Graylog 的 GELF UDP 輸入器進行測試,可以採用以下指令進行驗證,請先開啟 PowerShell 後執行:

[void]([System.Net.Sockets.UdpClient]::new().Send([System.Text.Encoding]::UTF8.GetBytes('{"version":"1.1","host":"myserver","short_message":"Test message","level":5}'), [System.Text.Encoding]::UTF8.GetByteCount('{"version":"1.1","host":"myserver","short_message":"Test message","level":5}'), "192.168.1.51", 32201))

回到 Graylog 伺服器 GELF UDP 輸入器的 Show received message 檢視,即可找到經由剛剛的指令送出的測試記錄。

https://ithelp.ithome.com.tw/upload/images/20240919/20118848zAzuEtxgYa.png
搜尋測試記錄

經由這些測試技巧,可以協助我們快速判斷問題是出在網路、Eventlog 還是 NXLog CE 套件的相關問題。


參考資料


上一篇
Graylog 裝置端設定:Linux
下一篇
Graylog 搜尋 (一)
系列文
突破困境:開源記錄收集與分析系統10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言